package com.young.ums.service;

import com.young.common.util.Page;
import com.young.ums.model.Button;
import com.young.ums.model.RoleButton;
import java.util.List;

/**
* 角色按钮关联信息服务接口
* Created by imrookie on 2018-11-3.
*/
public interface IRoleButtonService {

    /**
     * 查询
     * @param obj
     * @return
     */
    List<RoleButton> getList(RoleButton obj);

    /**
     * 分页查询
     * @param obj
     * @param page
     * @return
     */
    List<RoleButton> getPage(RoleButton obj, Page page);

    /**
     * 查询单条
     * @param id
     * @return
     */
    RoleButton get(String id);

    /**
     * 统计数量
     * @param obj
     * @return Integer 满足xx条件的数据有多少条
     */
    int count(RoleButton obj);

    /**
     * 修改
     * @param obj
     * @return
     */
    int update(RoleButton obj);

    /**
     * 删除
     * @param id
     * @return
     */
    int delete(String id);

    /**
     * 删除角色相关的所有关联信息
     * @param roleId 角色id
     * @return
     */
    int deleteByRoleId(String roleId);

    /**
     * 删除按钮相关联的所有关联信息
     * @param buttonId 按钮id
     * @return
     */
    int deleteByButtonId(String buttonId);

    /**
     * 批量删除
     * @param idArr
     * @return
     */
    int delete(String[] idArr);

    /**
     * 插入
     * @param obj
     * @return
     */
    int insert(RoleButton obj);

    /**
     * 批量插入
     * @param list
     * @return
     */
    int batchInsert(List<RoleButton> list);

    /**
     * 批量关联按钮(N)到角色(1)
     * @param roleId 角色id
     * @param buttonIds 按钮id数组
     * @return
     */
    int relevanceButtons2Role(String roleId, String[] buttonIds);

    /**
     * 判断指定角色和按钮是否存在关联
     * @param roleId 角色id
     * @param buttonId 按钮id
     * @return
     */
    boolean isRelevanced(String roleId, String buttonId);

    /**
     * 获取按钮授权树
     * @param roleId 角色id
     * @return
     */
    List<Button> getButtonListAboutGrantAuth(String roleId);

    /**
     * 根据角色id查询相关联的按钮id集合
     * @param roleId 角色id
     * @return
     */
    List<String> getButtonIdsByRoleId(String roleId);

    /**
     * 根据角色id数组批量查询相关联的按钮id集合
     * @param roleIds
     * @return
     */
    List<String> getButtonIdsByRoleIds(String[] roleIds);

    /**
     * 根据按钮编号集合批量查询关联的角色编号
     * @param buttonIds 按钮id集合
     * @return
     */
    List<String> getRoleIdsByButtonIds(List<String> buttonIds);

}